Zero-Lag MA Trend FollowingScript Name: Zero-Lag MA Trend Following Auto-Trading
Purpose and Unique Features:
This script is designed to implement a trend-following auto-trading strategy by combining the Zero-Lag Moving Average (ZLMA), Exponential Moving Average (EMA), and ATR Bands. To differentiate it from similar scripts, the following key aspects are emphasized:
Zero-Lag MA (ZLMA):
Responds quickly to price changes, minimizing lag compared to EMA.
Detects crossovers with EMA and generates Diamond Signals to indicate trend reversals.
ATR Bands:
Measures market volatility to set stop-loss levels.
Helps optimize entry points and manage risk effectively.
Diamond Signals:
A vital visual cue indicating the early stages of trend reversals.
Green diamonds signal an uptrend, while red diamonds signal a downtrend.
Each component plays a distinct role, working synergistically to enhance trend detection and risk management. This system doesn’t merely combine indicators but optimizes them for comprehensive trend-following and risk control.
Usage Instructions:
Entry Conditions:
Long Entry:
Enter when a green Diamond Signal appears (ZLMA crosses above EMA).
Short Entry:
Enter when a red Diamond Signal appears (ZLMA crosses below EMA).
Exit Conditions:
Stop Loss:
Set at the lower boundary of the ATR band for BUY or the upper boundary for SELL at entry.
Take Profit:
Automatically executed based on a 1:2 risk-reward ratio.
Account Size: ¥100,0000
Commissions and Slippage: Assumed commission of 90 pips per trade and slippage of 1 pip.
Risk per Trade: 10% of account equity (adjustable based on risk tolerance).
Improvements and Original Features:
While based on open-source code, this script incorporates the following critical enhancements:
Diamond Signals from ZLMA and EMA Integration:
Improves entry accuracy with a proprietary trend detection strategy.
ATR Bands Utilization:
Adds a volatility-based risk management function.
Optimized Visual Entry Signals:
Includes plotted triangles (▲, ▼) to clearly indicate trend-following entry points.
Credits:
This script builds upon indicators developed by ChartPrime, whose innovative approach and insights have enabled a more advanced trend-following strategy. We extend our gratitude for their foundational work.
Additionally, it integrates technical methods based on Zero-Lag Moving Average (ZLMA), EMA, and ATR Bands, leveraging insights from the trading community.
Chart Display Options:
The script offers options to toggle the visual signals (Diamond Signals, trend lines, and entry points) on or off, keeping the chart clean while maximizing analytical efficiency.
Disclaimer:
This script is provided for educational purposes and past performance does not guarantee future results.
Use it responsibly with proper risk management.
Search in scripts for "THE SCRIPT"
Rounded Grid Levels🟩 Rounded Grid Levels is a visual tool that helps traders quickly identify key psychological price levels on any chart. By dynamically adapting to the user's visible screen area, it provides consistent, easy-to-read round number grids that align with price action. The indicator offers a traditional visualization of horizontal round level grids, along with enhanced options such as tilted grids that align with market sentiment, and fan-shaped grids for alternative price interaction views. It serves purely as a visual aid, providing an adaptable way to observe rounded price levels without making predictions or generating trading signals.
⚡ OVERVIEW ⚡
The Rounded Grid Levels indicator is a visual tool designed to help traders identify and track price levels that may hold psychological significance, such as round numbers or significant milestones. These levels often serve as potential areas for price reactions, including support, resistance, or points of market interest. The indicator's gridlines are determined by user-defined settings and adjust dynamically based on the visible chart area, meaning they are influenced by the user's current zoom level and perspective. This behavior is similar to TradingView's built-in grid lines found in the chart settings canvas, which also adjust in real-time based on the visible screen, ensuring the most relevant price levels are displayed. By default, the indicator provides consistent gridlines to represent traditional round number levels, offering a straightforward view of key psychological areas. Additionally, users have access to experimental and novel configurations, such as fan-shaped layouts, which expand from a central point and adapt directionally based on user settings. This configuration can provide an alternate perspective for traders, especially useful in analyzing broader market moves and visualizing expansion relative to the current price.
Users can display the gridlines in a variety of configurations, including horizontal, neutral, auto, or fan-shaped layouts, depending on their preferred method of analysis. This flexibility allows traders to focus on different types of price action without overcrowding the visual representation of price movements.
This indicator is intended purely as a visual aid for understanding how price interacts with rounded levels over time. It does not generate predictive trading signals or recommendations but rather provides traders with a customizable framework to enhance their market analysis.
⭕ ROUND NUMBERS IN MARKET PSYCHOLOGY ⭕
Round numbers hold a significant place in financial markets, largely due to the psychological tendencies of traders and investors. These levels often represent areas of interest where human behavior, market biases, and trading strategies converge. Whether it's prices ending in 000, 500, or other recognizable values, these levels naturally attract more attention and influence decision-making.
Round numbers can act as key support or resistance levels and often become focal points in market activity. They are frequently highlighted by financial media, embedded in products like options, and serve as foundations for various trading theories. Their impact extends across different market participants and strategies, making them important focal points in both short-term and long-term market analysis.
Round numbers play an important role in guiding trader behavior and market activity. To better understand why these levels are so impactful, there are several key factors that highlight their significance in trading and price dynamics:
Psychological Impact : Humans naturally gravitate toward round numbers, such as prices ending in 000, 500, or 00. These levels tend to draw attention as traders perceive them as psychologically significant. This behavior is rooted in the cognitive bias known as "left-digit bias," where people assign greater importance to rounded, more recognizable numbers. In trading, this means that prices at these levels are more memorable and thus more likely to attract attention, creating an area where traders focus their buying or selling decisions.
Order Clustering : Traders often place buy and sell orders around these rounded levels, either manually or automatically through stop and limit orders. This clustering leads to the formation of visible support or resistance zones, as the concentrated orders tend to influence price behavior around these key levels. Market participants tend to converge their orders around these price points because of their perceived psychological importance, creating a liquidity pocket. As a result, these areas often act as barriers that the price either struggles to cross or uses as springboards for further movement.
External Influences : Financial media frequently highlights round-number milestones, amplifying market sentiment and drawing traders' attention to these levels. Additionally, algorithmic trading systems often react to round-number thresholds, which can further reinforce price movements, creating self-reinforcing reactions at these levels. As media and analysts emphasize these milestones, more traders pay attention to them, leading to increased volume and often heightened volatility at those points. This self-reinforcing cycle makes round numbers an area where price movement can either accelerate due to a breakout or stall because of clustering interest.
Option Strike Prices : Options contracts typically have strike prices set at round numbers, and as expiration approaches, these levels can influence the price of the underlying asset due to concentrated trading activity. The behavior around these levels, often called "pinning," happens because traders adjust their positions to avoid unfavorable scenarios at these key strikes. This activity tends to concentrate price movement toward these levels as traders hedge their positions, leading to increased liquidity and the potential for abrupt price reactions near option expiration dates.
Whole Number Theory : This theory suggests that whole numbers act as natural psychological barriers, where traders tend to make decisions, place orders, or expect price reactions, making these levels crucial for analysis. Whole numbers are simple to remember and are often used as informal targets for profit-taking or stop placement. This behavior leads to a natural ebb and flow around these levels, where the market finds equilibrium temporarily before deciding on a future direction. Whole numbers tend to work like magnets, drawing price to them and often creating reactions that are visible across different timeframes.
Quarters Theory : Commonly used in Forex markets, this theory focuses on quarter-point increments (e.g., 1.0000, 1.2500, 1.5000) as key levels where price often pauses or reverses. These quarter levels are treated as important psychological barriers, with price frequently interacting at these intervals. Traders use these points to gauge market strength or weakness because quarter levels divide larger round-number ranges into more manageable and meaningful segments. For example, in highly traded forex pairs like EUR/USD, traders might treat 1.2500 as a significant barrier because it represents a halfway point between 1.0000 and 1.5000, offering a balanced reference point for decision-making.
Big Round Numbers : Major round numbers, such as 100, 500, or 1000, often attract significant attention and serve as psychological thresholds. Traders anticipate strong reactions when prices approach or cross these levels. This is often because large round numbers symbolize major milestones, and price behavior around them tends to signal important market sentiment shifts. When price crosses a major level, such as a stock moving above $100 or Bitcoin crossing $50,000, it often creates a surge in trading activity as it is viewed as a validation or invalidation of market trends, drawing in momentum traders and triggering both retail and institutional responses.
By visualizing these round levels on the chart, the Rounded Grid Levels indicator helps traders identify areas where price may pause, reverse, or gain momentum. While round numbers provide useful insights, they should be used in conjunction with other technical analysis tools for a comprehensive trading strategy.
🛠️ CONFIGURATION AND SETTINGS 🛠️
The Rounded Grid Levels indicator offers a variety of configurable settings to tailor the visualization according to individual trader preferences. Below are the key settings available for customization:
Custom Settings
Rounding Step : The Rounding Step parameter sets the minimum interval between gridlines. This value determines how closely spaced the rounded levels are on the chart. For example, if the Rounding Step is set to 100, gridlines will be displayed at every 100 points (e.g., $100, $200, $300) relative to the current price level. The Rounding Step is scaled to the chart's visible area, meaning users should adjust it appropriately for different assets to ensure effective visualization. Lower values provide a more granular view, while larger values give a broader, higher-level perspective.
Major Grids : Defines the interval at which major gridlines will appear compared to minor ones. For example, if the Rounding Step is 100 and Major Grids is set to 10, major gridlines will be displayed every $1,000, while minor gridlines will be at every $100. This distinction allows traders to better visualize key psychological levels by emphasizing significant price intervals.
Direction : Users can select the gridline direction, choosing between options such as 'Up', 'Down', 'Auto', or 'Neutral'. This setting controls how the gridlines extend relative to the current price level, which can help in analyzing directional trends.
Neutral Direction : This option provides balanced gridlines both above and below the current price, allowing traders to visualize support and resistance levels symmetrically. This is useful for analyzing sideways or ranging markets without directional bias.
Up Direction : The gridlines are tilted upwards, starting from visible lows and extending toward the rounded level at the current price. By choosing Up , traders emphasize an upward sentiment, visualizing price action that aligns with rising trends. This option helps illustrate potential areas where pullbacks may occur, as well as how price might expand upwards in the current market context.
Down Direction : The gridlines are tilted downwards, starting from visible highs and extending toward the rounded level at the current price. Selecting Down allows traders to emphasize a downward sentiment, visualizing how price may expand downwards, which is particularly useful when analyzing downtrends or potential correction levels. The gridlines provide an illustrative view of how price interacts with lower levels during market declines.
Auto Direction : The gridlines automatically adjust their direction based on recent market trends. This adaptive option allows traders to visualize gridlines that dynamically change according to price action, making it suitable for evolving market conditions where the direction is uncertain. It’s useful for traders looking for an indicator that moves in sync with market shifts and doesn’t require manual adjustment.
Grid Type : Allows users to choose between 'Linear' or 'Fan' grid types. The Linear type creates evenly spaced gridlines that can be either horizontal or tilted, depending on the chosen direction setting, providing a straightforward view of price levels. The Fan type radiates lines from a central point, offering a more dynamic perspective for analyzing price expansions relative to the current price. These grid types introduce experimental visualizations influenced by chart properties, including visible highs, lows, and the current price. Regardless of the configuration, the gridlines will always end at the current bar, which represents a rounded price level, ensuring consistency in how key price areas are displayed.
Extend : This setting allows gridlines to be projected into the future, helping traders see potential levels beyond the current bar. When enabled, the behavior of the extended lines varies based on the selected grid type and direction. For Neutral and Horizontal Linear settings, the extended gridlines maintain their round-number alignment indefinitely. However, for Up , Down , or Auto directions, the angle of the extended gridlines can change dynamically based on the chart’s visible high and low or the latest price action. As a result, extended lines may not continue to align with round-number levels beyond the current bar, reflecting instead the current trend and sentiment of the market. Regardless of direction, extended gridlines remain consistently spaced and either parallel or evenly distributed, ensuring a structured visual representation.
Color Settings : Users can customize the colors for resistance, support, and minor gridlines at the current price. This helps in visually distinguishing between different grid types and their significance on the chart.
Color Options
These configuration options make the Rounded Grid Levels indicator a versatile tool for traders looking to customize their charts based on their personal trading strategies and analytical preferences.
🖼️ CHART EXAMPLES 🖼️
The following chart examples illustrate different configurations available in the Rounded Grid Levels indicator. These examples show how variations in grid type, direction, and rounding step settings impact the visualization of price levels. Traders may find that smaller rounding steps are more effective on lower time frames, where precision is key, whereas larger rounding steps help to reduce clutter and highlight key levels on higher time frames. Each image includes a caption to explain the specific configuration used, helping users better understand how to apply these settings in different market conditions.
Smaller Rounding Step (100) : With a smaller rounding step, the gridlines are spaced closely together. This setting is particularly useful for lower time frames where price action is more granular and finer details are needed. It allows traders to track price interactions at narrower levels, but on higher time frames, it may lead to clutter and exceed Pine Script's 500-line limit.
Larger Rounding Step (1000) : With a larger rounding step, the gridlines are spaced farther apart. This visualization is better suited for higher time frames or broader market overviews, allowing users to focus on major psychological levels without overloading the chart. On lower time frames, this may result in fewer actionable levels, but it helps in maintaining clarity and staying within Pine Script's line limit.
Linear Grid Type, Neutral Direction (Traditional Rounded Price Levels) : The Linear gridlines are displayed in a neutral fashion, representing traditional round-number levels with consistent spacing above and below the current price. This layout helps visualize key psychological price levels over time in a straightforward manner.
Linear Grid Type, Down Direction : The Linear gridlines are tilted downwards, remaining parallel and ending at the rounded level at the current price. This setup emphasizes downward market sentiment, allowing traders to visualize price expansion towards lower levels, which is useful when analyzing downtrends or potential correction levels.
Linear Grid Type, Down Direction : The Linear gridlines are tilted downwards, extending from the current price to lower levels. Useful for observing downtrending price movements and visualizing pullback areas during uptrends.
Linear Grid Type, Auto Direction : The Linear gridlines adjust dynamically, tilting either upwards or downwards to align with recent price trends, remaining parallel and ending at the rounded level at the current price. This configuration reflects the current market sentiment and offers traders a flexible way to observe price dynamics as they develop in real time.
Fan Grid Type, Neutral Direction : The fan-shaped gridlines radiate symmetrically from a central point, ending at the rounded level at the current price. This configuration provides an unbiased view of price action, giving traders a balanced visualization of rounded levels without directional influence.
Fan Grid Type, Up Direction : The fan-shaped gridlines originate from lower visible price points and radiate upwards, ending at the rounded level at the current price. This layout helps visualize potential price expansion to higher levels, offering insights into upward momentum while maintaining a dynamic and evolving perspective on market conditions.
Fan Grid Type, Down Direction : The fan-shaped gridlines originate from higher visible price points and radiate downwards, ending at the rounded level at the current price. This setup is particularly useful for observing potential price expansion towards lower levels, illustrating areas where the price might extend during a downtrend.
Fan Grid Type, Auto Direction : The fan-shaped gridlines dynamically adjust, originating from visible chart points based on the current market trend, and radiate outward, ending at the rounded level at the current price. This adaptive visualization offers a continuously evolving representation that aligns with changing market sentiment, helping traders assess price expansion dynamically.
📊 SUMMARY 📊
The Rounded Grid Levels indicator helps traders highlight important round-number price levels on their charts, providing a dynamic way to visualize these psychological areas. With customizable gridline options—including traditional, tilted, and fan-shaped styles—users can adapt the indicator to suit their analysis needs. The gridlines adjust with chart zoom or scale, offering a flexible tool for observing price action, without providing specific trading signals or predictions.
⚙️ COMPATIBILITY AND LIMITATIONS ⚙️
Asset Compatibility :
The Rounded Grid Levels indicator is compatible with all asset classes, including cryptocurrencies, forex, stocks, and commodities. Users should adjust both the Rounding Step and the Major Grid settings to ensure the correct scale is used for the specific asset. This adjustment ensures that the most relevant round price levels are displayed effectively regardless of the instrument being analyzed. For instance, when analyzing BTCUSD, a higher Rounding Step may be needed compared to forex pairs like EURUSD, and the Major Grid value should also be adjusted to appropriately emphasize significant levels.
Line Limitations in Pine Script :
The Rounded Grid Levels indicator is subject to Pine Script's 500-line limit. This means that it cannot draw more than 500 gridlines on the chart at any given time. The number of gridlines depends directly on the chosen Rounding Step . If the steps are too small, the gridlines will be spaced too closely, causing the indicator to quickly reach the line limit. For example, if Ethereum is trading around $2,500, a Rounding Step of 100 might be appropriate, but a step of 1.00 would create too many gridlines, exceeding Pine Script's limit. Users should consider appropriate settings to avoid running into this constraint.
Runtime Error Considerations
When using the Rounded Grid Levels indicator, users might encounter a runtime error in specific scenarios. This typically happens if the Rounding Step is set too small, causing the indicator to exceed Pine Script's line limit or take too long to process. This can often occur when switching between charts that have significantly different price ranges. Since the Rounding Step requires flexibility to work with a wide variety of assets—ranging from decimals to thousands—it is not practically limited within the script itself. If a runtime error occurs, the recommended solution is to increase the Rounding Step to a larger value that better matches the current asset's price range.
Runtime Error: If the Rounding Step is too small for the current asset or chart, the indicator may generate a runtime error. Users should increase the Rounding Step to ensure proper visualization.
⚠️ DISCLAIMER ⚠️
The Rounded Grid Levels indicator is not designed as a predictive tool. While it extends gridlines into the future, this extension is purely for visual continuity and does not imply any forecast of future price movements. The primary function of this indicator is to help users visualize significant round number price levels.
The gridlines adjust dynamically based on the visible chart range, ensuring that the most relevant round price levels are displayed. This behavior allows the indicator to adapt to your current view of the market, but it should not be used to predict price movements. The indicator is intended as a visual aid and should be used alongside other tools in a comprehensive market analysis approach.
While gridlines may align with significant price levels in hindsight, they should not be interpreted as indicators of future price movements. Traders are encouraged to adjust settings based on their strategy and market conditions.
🧠 BEYOND THE CODE 🧠
The Rounded Grid Levels indicator, like other xxattaxx indicators , is designed with education and community collaboration in mind. Its open-source nature encourages exploration, experimentation, and the development of new grid calculation indicators, drawings, and strategies. We hope this indicator serves as a framework and a starting point for future innovations in grid trading.
Your comments, suggestions, and discussions are invaluable in shaping the future of this project. We actively encourage your feedback and contributions, which will directly help us refine and improve the Rounded Grid Levels indicator. We look forward to seeing the creative ways in which you use and enhance this tool.
Options Series - Supertrend, HalfTrend, Ichimoku Cloud and P_SAR➤ Supertrend:
➤ HalfTrend:
➤ Ichimoku Cloud:
➤ Parabolic SAR:
⭐ Overview and How It Works:
This script combines multiple popular technical indicators—Supertrend, HalfTrend, Ichimoku Cloud, and Parabolic SAR—into a single, cohesive tool for analyzing price trends and reversals. Designed for traders who prefer multi-layered confirmation, it displays non-overlay signals in a candlestick format, helping users make sense of intricate market dynamics. It also includes a "Master Candle" condition, which aggregates the signals from all indicators, providing a powerful snapshot of market sentiment.
References for study,
Supertrend and HalfTrend and Ichimoku Cloud and Parabolic SAR
⭐ Key Features and Functionality:
The script integrates four indicators and visually represents them in a non-overlay fashion, meaning that each indicator's signal appears on separate candlestick layers. It uses color coding to differentiate between bullish and bearish signals. The Master Candle is a unique feature that aggregates the signals from all indicators to show the overall sentiment.
Supertrend: It uses ATR and a multiplier factor to create a trailing stop, identifying bullish and bearish trends.
HalfTrend: It analyzes market volatility that provides buy and sell signals based on volatility channels and historical highs and lows.
Ichimoku Cloud: It leverages historical highs and lows to form the conversion and baseline, which are compared to assess market strength.
Parabolic SAR: A stop-and-reverse system that highlights potential reversals. It is based on time and price, offering traders potential reversal points.
Master Candle: It computes a score based on the confluence of all four indicators, adding another layer of confirmation.
🎨 Visualizations and User Experience:
The script's user interface is highly visual, with color-coded candlesticks plotted across multiple layers. Each indicator has its own color coding for bullish and bearish signals, ensuring clarity:
➤ Green for bullish signals.
➤ Red for bearish signals.
➤ Each candlestick layer represents a different indicator (e.g., Supertrend, HalfTrend, etc.), making it easy for the trader to isolate and interpret signals.
➤ The "Master Candle" provides an overarching view of the market by displaying a consolidated signal, which can reduce confusion from mixed indicator signals.
⭐ Settings and Customization:
The script is highly customizable, allowing users to adjust the settings for each indicator. Key customizable parameters include:
• Supertrend ATR Period and Factor
• HalfTrend Amplitude and Channel Deviation
• Ichimoku Conversion, Base, and Lagging Span Periods
• Parabolic SAR Start, Increment, and Maximum value
Additionally, users can toggle the visibility of each indicator and customize the look of the plot to suit their preferences.
⭐ Uniqueness of the Concept:
No repaints. This is the advanced representation and the combination of multiple indicators into a single script, along with a powerful "Master Candle" that aggregates them, makes this tool unique. Most scripts provide isolated indicator signals, while this one brings together four powerful indicators and visually simplifies the analysis. The non-overlay style and color-coded candlesticks offer traders an easy-to-understand, actionable visual cue, which stands out from traditional indicator overlays.
🚀 Conclusion:
This script is a comprehensive, multi-indicator trading tool suitable for traders looking for reliable trend-following and reversal detection. Its ability to provide an aggregated "Master Candle" signal reduces noise and aids in better decision-making. Customization options allow users to tailor it to their trading style, while its clear visualizations provide an excellent user experience.
Three Bar Reversal Pattern [LuxAlgo]The Three Bar Reversal Pattern indicator identifies and highlights three bar reversal patterns on the user price chart.
The script also provides an option for incorporating various trend indicators used to filter out detected signals, allowing them to enhance their accuracy and help obtain a more comprehensive analysis.
🔶 USAGE
The script automates the detection of three-bar reversal patterns and provides a clear, visually identifiable signal for potential trend reversals.
When a reversal chart pattern is confirmed and price action aligns with the pattern, the pattern's boundaries are extended, forming levels, with the upper boundary often acting as a resistance and the lower boundary as a support.
The script allows users to filter patterns based on a specific trend direction detected by multiple trend indicators. Users can choose to view patterns that are either aligned with the detected trend or opposite to it.
Included trend indicators are: Moving Average Cloud, Supertrend, and Donchian Channels.
🔶 DETAILS
The three-bar reversal pattern is a technical analysis pattern that signals a potential reversal in the prevailing trend. The pattern consists of three consecutive bar formations:
First Bar and Second Bar: 2 consecutive of the same sentiment, representing the prevailing trend in the market.
Third Bar: Confirms the reversal by closing beyond the high or low of the first bar, signaling a potential change in market sentiment.
Various types of three-bar reversal patterns are documented. The script supports two main types:
Normal Pattern: Detects three-bar reversal patterns without requiring the third bar closing price to surpass the high (bullish pattern) or low (bearish pattern) of the first bar. It identifies basic formations signaling potential trend reversals.
Enhanced Pattern: Specifically identifies three-bar reversal patterns where the third bar closing price surpasses the high (bullish pattern) or low (bearish pattern) of the first bar. This type provides a more selective signal for stronger trend reversals.
🔶 SETTINGS
Pattern Type: Users can choose the type of 3-bar reversal patterns to detect: Normal, Enhanced, or All. "Normal" detects patterns that do not necessarily surpass the high/low of the first bar. "Enhanced" detects patterns where the third bar surpasses the high/low of the first bar. "All" detects both Normal and Enhanced patterns.
Derived Support and Resistance: Toggles the visibility of the support and resistance levels/zones.
🔹 Trend Filtering
Filtering: Allows users to filter patterns based on the trend indicators: Moving Average Cloud, Supertrend, and Donchian Channels. The "Aligned" option only detects patterns that align with the trend and conversely, the "Opposite" option detects patterns that go against the trend.
🔹 Trend Indicator Settings
Moving Average Cloud: Allows traders to choose the type of moving averages (SMA, EMA, HMA, etc.) and set the lengths for fast and slow-moving averages.
Supertrend: Options to set the ATR length and factor for Supertrend.
Donchian Channels: Option to set the length for the channel calculation.
🔶 RELATED SCRIPTS
Reversal-Candlestick-Structure .
Reversal-Signals .
Rolling VWAPGuide for Traders
What is the Rolling VWAP?
The Volume Weighted Average Price (VWAP) is a key indicator used by traders to assess the average price of an asset, weighted by volume over a specified period. Unlike a simple moving average, the VWAP accounts for trading volume, making it a more accurate reflection of price action and market sentiment.
The Rolling VWAP in this script dynamically updates based on a user-defined period, allowing traders to view the average price over a chosen number of bars. This is particularly useful for identifying trends and potential entry or exit points in the market.
Key Benefits of Using Rolling VWAP
Better Market Insight: VWAP provides insight into where most trading is occurring, helping you gauge the strength of a price move.
Support and Resistance Levels: It often acts as dynamic support or resistance, signaling areas where price might reverse.
Trend Confirmation: A rising VWAP suggests a bullish trend, while a falling VWAP indicates a bearish trend.
Informed Entry/Exit Decisions: Use the VWAP to find entry points below it in an uptrend or exit points above it in a downtrend.
How to Use this Script:
Custom Period Input:
You can modify the "VWAP Period" to adjust the number of bars considered in the rolling calculation.
The default period is 14 bars, but you can set it based on your strategy (e.g., shorter for intraday trading, longer for swing trading).
Chart Interpretation
Bullish Signals: When the price is above the VWAP line, it suggests upward momentum, and you may consider buying opportunities.
Bearish Signals: When the price is below the VWAP, it indicates downward momentum, and you may consider selling or shorting opportunities.
Reversion to VWAP: Prices often revert to the VWAP after extended moves away from it, offering potential trade setups.
Combine with Other Indicators:
Momentum Indicators: Use with RSI, MACD, or moving averages for confirmation.
Volume Analysis: VWAP works well when combined with volume indicators to assess if a breakout is supported by high trading volume.
Customization:
Traders can customize the script's period and plot color to fit their charting preferences.
Practical Tips:
Intraday Traders: Use shorter periods (e.g., 5 or 10) to capture VWAP trends in fast-moving markets.
Swing Traders: Use longer periods (e.g., 50 or 100) to assess longer-term price and volume trends.
By integrating this Rolling VWAP into your strategy, you can better understand where the majority of trading volume has occurred, allowing you to make more informed decisions in your trading process.
CSVParser█ OVERVIEW
The library contains functions for parsing and importing complex CSV configurations (with a special simple syntax) into a special hierarchical object (of type objProps ) as follows:
Functions:
parseConfig() - reads CSV text into an objProps object.
toT() - displays the contents of an objProps object in a table form, which allows to check the CSV text for syntax errors.
getPropAr() - returns objProps.arS array for child object with `prop` key in mpObj map (or na if not found)
This library is handy in allowing users to store presets for the scripts and switch between them (see, e.g., my HTF moving averages script where users can switch between several preset configuations of 24 MA's across 5 timeframes).
█ HOW THE SCRIPT WORKS.
The script works as follows:
all values read from config text are stored as strings
Nested brackets in config text create a named nested objects of objProps0, ... , objProps9 types.
objProps objects of each level have the following fields:
- array arS for storing values without names (e.g. "12, 23" will be imported into a string array arS as )
- map mpS for storing items with names (e.g. "tf = 60, length = 21" will be imported as <"tf", "60"> and <"length", "21"> pairs into mpS )
- map mpObj for storing nested objects (e.g. "TF1(tf=60, length(21,50,100))" creates a <"TF1, objProps0 object> pair in mpObj map property of the top level object (objProps) , "tf=60" is stored as <"tf", "60"> key-value pair in mpS map property of a next level object (objProps0) and "length (...)" creates a <"length", objProps1> pair in objProps0.mpObj map while length values are stored in objProps1.arS array as strings. Every opening bracket creates a next level objProps object.
If objects or properties with duplicate names are encountered only the latest is imported
(e.g. for "TF1(length(12,22)), TF1(tf=240)" only "TF1(tf=240)" will be imported
Line breaks are not regarded as part of syntax (i.e. values are imported with line breaks, you can supply
symbols "(" , ")" , "," and "=" are special characters and cannot be used within property values (with the exception of a quoted text as a value of a property as explained below)
named properties can have quoted text as their value. In that case special characters within quotation marks are regarded as normal characters. Text between "=" and opening quotation mark as well as text following the closing quotation mark and until next property value is ignored. E.g. "quote = ignored "The quote" also ignored" will be imported as <"quote", "The quote">. Quotation marks within quotes must be excaped with "\" .
if a key names happens to be a multi-line then only first line containing non-space characters (trimmed from spaces) is taken as a key.
")," or ") ," and similar do not create an empty ("") array item while ",," does. (",)" creates an "" array item)
█ CSV CONFIGURATION SYNTAX
Unnamed values: just list them comma separated and they will be imported into arS of the object of the current level.
Named values: use "=" sign as follows: "property1=value1, property2 = value2"
Value of several objects: Use brackets after the name of the object ant list all object properties within the brackets (including its child objects if necessary). E.g. "TF1(tf =60, length(21,200), TF2(tf=240, length(50,200)"
Named and unnamed values as well as objects can go in any order. E.g. "12, tf=60, 21" will be imported as follows: "12", "21" will go to arS array and <"tf", "60"> will go to mpS maP of objProps (the top level object).
You can play around and test your config text using demo in this library, just edit your text in script settings and see how it is parsed into objProps objects.
█ USAGE RECOMMENDATIONS AND SAMPLE USE
I suggest the following approach:
- create functions for your UDT which can set properties by name.
- create enumerator functions which iterates through all the property names (supplied as a const string array) and imports their values into the object
█ SAMPLE USE
A sample use of this library can be seen in my Multi-timeframe 24 moving averages + BB+SAR+Supertrend+VWAP script where settings for the MAs across many timeframes are imported from CSV configurations (presets).
█ FULL LIST OF FUNCTIONS AND PROPERTIES
nzs(_s, nz)
Like nz() but for strings. Returns `nz` arg (default = "") if _s is na.
Parameters:
_s (string)
nz (string)
method init(this)
Initializes objProps obj (creates child maps and arrays)
Namespace types: objProps
Parameters:
this (objProps)
method toT(this, nz)
Outputs objProps to string matrices for further display using autotable().
Namespace types: objProps, objProps1, ..., objProps9
Parameters:
this (objProps/objProps1/..../objProps9)
nz (string)
Returns: A tuple - value, merge and color matrix (autotable() parameters)
method parseConfig(this, s)
Reads config text into objProps (unnamed values into arS, named into mpS, sub-levels into mpObj)
Namespace types: objProps
Parameters:
this (objProps)
s (string)
method getPropArS(this, prop)
Returns a string array of values for a given property name `prop`. Looks for a key `prop` in objProps.mpObj
if finds pair returns obj.arS, otherwise returns na. Returns a reference to the original, not a copy.
Namespace types: objProps, objProps1, ..., objProps8
Parameters:
this (objProps/objProps1/..../objProps8)
prop (string)
method getPropVal(this, prop, id)
Checks if there is an array of values for property `prop` and returns its `id`'s element or na if not found
Namespace types: objProps, objProps1, ..., objProps8
Parameters:
this (objProps/objProps1/..../objProps8) : objProps object containing array of property values in a child objProp object corresponding to propertty name.
prop (string) : (string) Name of the property
id (int) : (int) Id of the element to be returned from the array pf property values
objProps9 type
Object for storing values read from CSV relating to a particular object or property name.
Fields:
mpS (map) : (map() Stores property values as pairs
arS (array) : (string ) Array of values
objProps, objProps0, ... objProps8 types
Object for storing values read from CSV relating to a particular object or property name.
Fields:
mpS (map) : (map() Stores property values as pairs
arS (array) : (string ) Array of values
mpObj (map) : (map() Stores objProps objects containing properties's data as pairs
Tick CVD [Kioseff Trading]Hello!
This script "Tick CVD" employs live tick data to calculate CVD and volume delta! No tick chart required.
Features
Live price ticks are recorded
CVD calculated using live ticks
Delta calculated using live ticks
Tick-based HMA, WMA, EMA, or SMA for CVD and price
Key tick levels (S/R CVD & price) are recorded and displayed
Price/CVD displayable as candles or lines
Polylines are used - data visuals are not limited to 500 points.
Efficiency mode - remove all the bells and whistles to capitalize on efficiently calculated/displayed tick CVD and price
How it works
While historical tick-data isn't available to non-professional subscribers, live tick data is programmatically accessible. Consequently, this indicator records live tick data to calculate CVD, delta, and other metrics for the user!
Generally, Pine Scripts use the following rules to calculate volume/price-related metrics:
Bullish Volume: When the close price is greater than the open price.
Bearish Volume: When the close price is less than the open price.
This script, however, improves on that logic by utilizing live ticks. Instead of relying on time-series charts, it records up ticks as buying volume and down ticks as selling volume. This allows the script to create a more accurate CVD, delta, or price tick chart by tracking real-time buying and selling activity.
Price can tick fast; therefore, tick aggregation can occur. While tick aggregation isn't necessarily "incorrect", if you prefer speed and efficiency it's advised to enable "efficiency mode" in a fast market.
The image above highlights the tick CVD and price tick graph!
Green price tick graph = price is greater than its origin point (first script load)
Red price tick graph = price is less than its origin point
Blue tick CVD graph = CVD, over the calculation period, is greater than 0.
Red tick CVD graph = CVD is less than 0 over the calculation period.
The image above explains the right-oriented scales. The upper scale is for the price graph and the lower scale for the CVD graph.
The image above explains the circles superimposed on the scale lines for the price graph and the CVD graph.
The image above explains the "wavy" lines shown by the indicator. The wavy lines correspond to tick delta - whether the recorded tick was an uptick or down tick and whether buy volume or sell volume transpired.
The image above explains the blue/red boxes displayed by the indicator. The boxes offer an alternative visualization of tick delta, including the magnitude of buying/selling volume for the recorded tick.
Blue boxes = buying volume
Red boxes = selling volume
Bright blue = high buying volume (relative)
Bright red = high selling volume (relative)
Dim blue = low buying volume (relative)
Dim red = low selling volume (relative)
The numbers displayed in the box show the numbered tick and the volume delta recorded for the tick.
The image above further explains visuals for the CVD graph.
Dotted red lines indicate key CVD peaks, while dotted blue lines indicate key CVD bottoms.
The white dotted line reflects the CVD average of your choice: HMA, WMA, EMA, SMA.
The image above offers a similar explanation of visuals for the price graph.
The image above offers an alternative view for the indicator!
The image above shows the indicator when efficiency mode is enabled. When trading a fast market, enabling efficiency mode is advised - the script will perform quicker.
Of course, thank you to @RicardoSantos for his awesome library I use in almost every script :D
Thank you for checking this out!
Dual Chain StrategyDual Chain Strategy - Technical Overview
How It Works:
The Dual Chain Strategy is a unique approach to trading that utilizes Exponential Moving Averages (EMAs) across different timeframes, creating two distinct "chains" of trading signals. These chains can work independently or together, capturing both long-term trends and short-term price movements.
Chain 1 (Longer-Term Focus):
Entry Signal: The entry signal for Chain 1 is generated when the closing price crosses above the EMA calculated on a weekly timeframe. This suggests the start of a bullish trend and prompts a long position.
bullishChain1 = enableChain1 and ta.crossover(src1, entryEMA1)
Exit Signal: The exit signal is triggered when the closing price crosses below the EMA on a daily timeframe, indicating a potential bearish reversal.
exitLongChain1 = enableChain1 and ta.crossunder(src1, exitEMA1)
Parameters: Chain 1's EMA length is set to 10 periods by default, with the flexibility for user adjustment to match various trading scenarios.
Chain 2 (Shorter-Term Focus):
Entry Signal: Chain 2 generates an entry signal when the closing price crosses above the EMA on a 12-hour timeframe. This setup is designed to capture quicker, shorter-term movements.
bullishChain2 = enableChain2 and ta.crossover(src2, entryEMA2)
Exit Signal: The exit signal occurs when the closing price falls below the EMA on a 9-hour timeframe, indicating the end of the shorter-term trend.
exitLongChain2 = enableChain2 and ta.crossunder(src2, exitEMA2)
Parameters: Chain 2's EMA length is set to 9 periods by default, and can be customized to better align with specific market conditions or trading strategies.
Key Features:
Dual EMA Chains: The strategy's originality shines through its dual-chain configuration, allowing traders to monitor and react to both long-term and short-term market trends. This approach is particularly powerful as it combines the strengths of trend-following with the agility of momentum trading.
Timeframe Flexibility: Users can modify the timeframes for both chains, ensuring the strategy can be tailored to different market conditions and individual trading styles. This flexibility makes it versatile for various assets and trading environments.
Independent Trade Logic: Each chain operates independently, with its own set of entry and exit rules. This allows for simultaneous or separate execution of trades based on the signals from either or both chains, providing a robust trading system that can handle different market phases.
Backtesting Period: The strategy includes a configurable backtesting period, enabling thorough performance assessment over a historical range. This feature is crucial for understanding how the strategy would have performed under different market conditions.
time_cond = time >= startDate and time <= finishDate
What It Does:
The Dual Chain Strategy offers traders a distinctive trading tool that merges two separate EMA-based systems into one cohesive framework. By integrating both long-term and short-term perspectives, the strategy enhances the ability to adapt to changing market conditions. The originality of this script lies in its innovative dual-chain design, providing traders with a unique edge by allowing them to capitalize on both significant trends and smaller, faster price movements.
Whether you aim to capture extended market trends or take advantage of more immediate price action, the Dual Chain Strategy provides a comprehensive solution with a high degree of customization and strategic depth. Its flexibility and originality make it a valuable tool for traders seeking to refine their approach to market analysis and execution.
How to Use the Dual Chain Strategy
Step 1: Access the Strategy
Add the Script: Start by adding the Dual Chain Strategy to your TradingView chart. You can do this by searching for the script by name or using the link provided.
Select the Asset: Apply the strategy to your preferred trading pair or asset, such as #BTCUSD, to see how it performs.
Step 2: Configure the Settings
Enable/Disable Chains:
The strategy is designed with two independent chains. You can choose to enable or disable each chain depending on your trading style and the market conditions.
enableChain1 = input.bool(true, title='Enable Chain 1')
enableChain2 = input.bool(true, title='Enable Chain 2')
By default, both chains are enabled. If you prefer to focus only on longer-term trends, you might disable Chain 2, or vice versa if you prefer shorter-term trades.
Set EMA Lengths:
Adjust the EMA lengths for each chain to match your trading preferences.
Chain 1: The default EMA length is 10 periods. This chain uses a weekly timeframe for entry signals and a daily timeframe for exits.
len1 = input.int(10, minval=1, title='Length Chain 1 EMA', group="Chain 1")
Chain 2: The default EMA length is 9 periods. This chain uses a 12-hour timeframe for entries and a 9-hour timeframe for exits.
len2 = input.int(9, minval=1, title='Length Chain 2 EMA', group="Chain 2")
Customize Timeframes:
You can customize the timeframes used for entry and exit signals for both chains.
Chain 1:
Entry Timeframe: Weekly
Exit Timeframe: Daily
tf1_entry = input.timeframe("W", title='Chain 1 Entry Timeframe', group="Chain 1")
tf1_exit = input.timeframe("D", title='Chain 1 Exit Timeframe', group="Chain 1")
Chain 2:
Entry Timeframe: 12 Hours
Exit Timeframe: 9 Hours
tf2_entry = input.timeframe("720", title='Chain 2 Entry Timeframe (12H)', group="Chain 2")
tf2_exit = input.timeframe("540", title='Chain 2 Exit Timeframe (9H)', group="Chain 2")
Set the Backtesting Period:
Define the period over which you want to backtest the strategy. This allows you to see how the strategy would have performed historically.
startDate = input.time(timestamp('2015-07-27'), title="StartDate")
finishDate = input.time(timestamp('2026-01-01'), title="FinishDate")
Step 3: Analyze the Signals
Understand the Entry and Exit Signals:
Buy Signals: When the price crosses above the entry EMA, the strategy generates a buy signal.
bullishChain1 = enableChain1 and ta.crossover(src1, entryEMA1)
Sell Signals: When the price crosses below the exit EMA, the strategy generates a sell signal.
bearishChain2 = enableChain2 and ta.crossunder(src2, entryEMA2)
Review the Visual Indicators:
The strategy plots buy and sell signals on the chart with labels for easy identification:
BUY C1/C2 for buy signals from Chain 1 and Chain 2.
SELL C1/C2 for sell signals from Chain 1 and Chain 2.
This visual aid helps you quickly understand when and why trades are being executed.
Step 4: Optimize the Strategy
Backtest Results:
Review the strategy’s performance over the backtesting period. Look at key metrics like net profit, drawdown, and trade statistics to evaluate its effectiveness.
Adjust the EMA lengths, timeframes, and other settings to see how changes affect the strategy’s performance.
Customize for Live Trading:
Once satisfied with the backtest results, you can apply the strategy settings to live trading. Remember to continuously monitor and adjust as needed based on market conditions.
Step 5: Implement Risk Management
Use Realistic Position Sizing:
Keep your risk exposure per trade within a comfortable range, typically between 1-2% of your trading capital.
Set Alerts:
Set up alerts for buy and sell signals, so you don’t miss trading opportunities.
Paper Trade First:
Consider running the strategy in a paper trading account to understand its behavior in real market conditions before committing real capital.
This dual-layered approach offers a distinct advantage: it enables the strategy to adapt to varying market conditions by capturing both broad trends and immediate price action without one chain's activity impacting the other's decision-making process. The independence of these chains in executing transactions adds a level of sophistication and flexibility that is rarely seen in more conventional trading systems, making the Dual Chain Strategy not just unique, but a powerful tool for traders seeking to navigate complex market environments.
Three Drive Pattern Detector [LuxAlgo]The Three Drives Pattern Detector indicator focuses on detecting and displaying completed Three Drives patterns on the user chart. This harmonic pattern is characterized by successive higher highs / lower lows following specific ratios.
The script uses a multi-length swing detection approach, as well as adjusting ratios to ensure flexibility and a maximum number of visible Three Drives patterns.
🔶 USAGE
The bullish/bearish Three Drives pattern is commonly interpreted as a reversal pattern and is characterized by three extensions (drives) and two intermediary retracements creating consecutive higher lows (for a bullish case) or lower highs (for a bearish case).
The multi-length swing detection approach taken by the indicator allows for detecting shorter-term alongside medium/longer-term patterns simultaneously, allowing to increase in the amount of detected patterns.
Users can set a Minimum Swing length (for example 2) and a Maximum Swing length (for example 100) which defines the range of the swing point detection length, higher values for these settings will detect longer-term Three-Drives patterns, while a larger range will allow for the detection of a larger number of patterns.
Sometimes multiple dashed lines as the last segment can be observed. This means multiple Three Drives patterns sharing multiple swing points have formed, with only the last segment being different.
🔹 Retracement/Extension Ratios
The Three Drives pattern often associates the retracement/extension to Fibonacci ratios of respectively 0.618/1.272.
Some sources specify a maximum retracement/extension level of 0.786/1.618, which means the retracement should be within the 0.618-0.786 range and the extension between 1.272-1.618.
Since finding a pattern where the retracement/extension is precisely at the 0.618/1.272 levels, or even between 0.618-0.786/1.272-1.618 is rare, the script allows users to adjust those ratios, which ensures more flexibility. Depending on the widening/tightening of the ratios, allowing users to find more patterns (but potentially less valid) or more valid (but fewer patterns).
In the example above, " Show Ratios " is set to " Ratios With Margin ", showing the ideal retracement/extension level together with the margin, while in the example below, " Show Ratios " is set to " Ratios ", which shows only a line where the price should ideally reverse.
While setting the ratios wider will result in more frequent but less valid patterns, it can also create good trading opportunities.
🔹 Best Practices
The indicator doesn't include Stop Loss (SL) or Take Profit (TP) levels, however, the 1.618 Fibonacci Extension level of the last leg can commonly be used as stop loss.
Typical Take Profit areas include:
Starting point of the pattern
Each retracement level (2x)
The 0.618 retracement level of the complete pattern
In the above bullish examples, the price was lower than the lowest point of the pattern. The price reversed and attained all TP levels without hitting the SL level.
In the above bearish example, the price went above the highest point of the pattern but did not hit the SL level, after which two TP levels were hit. Then, the price quickly went up, just missing the SL level before it came back down again, hitting the last 2 TP levels.
This example shows that other Fibonacci levels an also be effective when combined with the Three Drives pattern, even in the longer term.
🔶 DETAILS
🔹 Multi Length
The core of this publication is the multi-length swing detection. To ensure the maximum amount of Three Drives patterns are found, up to 99 different swing length periods can be used to detect swing points which are then tested for valid patterns.
Using a wider variety of swing points also ensures that patterns visible only with specific Swing settings can be found on the same chart without the user needing to constantly adjust the Swing settings to find other patterns.
The user only needs to set the desired minimum and maximum Swing Length.
In this case, swing detection using swing Lengths from 3 to 100 (97 different) are computed and evaluated for patterns. Three different patterns were found on the same chart, with swing lengths 3, 4, and 6.
Note: The Maximum Swing length should be equal to or higher than the Minimum Swing Length . If the maximum value is lower than the minimum, the script will automatically take the minimum value as the maximum to prevent errors.
🔹 Width Margin %
Users can filter out patterns based on the duration of each extension/retracement segment. When the users want segments of the detected patterns to be of a similar duration, the width percentage should be set lower. When the focus is on detecting more patterns the width percentage can be set higher.
🔹 Retracement/Extension Settings
Show Ratios , set to Ratios , show the ideal Fibonacci retracement/extension level, while Ratios With Margin (example below) show the additional margins for retracement/extension.
The upper and lower limits can be visualized while hovering over the calculated ratio label.
The dashed line shows an older pattern, where the last leg has been updated.
🔹 Last Known Pattern
The included dashboard highlights the date of the most recently detected pattern; the text will show " None " if no pattern is found.
🔹 Calculated Bars
The "Calculated Bars" setting makes use of the recently introduced calc_bars_count parameter, making it possible to effectively reduce the number of historical bars during the computation of the script, which significantly improves the loading speed of the script.
Users wishing to see the most recent patterns can set this setting to 1000 for example, where only the most recent 1000 bars are used to find patterns. If every bar must be used for pattern detection, set " Calculated bars " at 0.
🔶 SETTINGS
Minimum Swing Length: Minimum length used for the swing detection.
Maximum Swing Length: Maximum length used for the swing detection.
Retracement: Range of required ratios used for testing retracements.
Extension: Range of required ratios used for testing extensions.
Width Margin: Influences the symmetry of the pattern; with a higher number allowing for less symmetry.
🔹 Style
Text Size: Text size of the ratio labels.
Show Ratios: Show the ideal ratio, upper/lower limit of ratios, or none.
🔹 Dashboard
Show Dashboard: Toggle dashboard which shows the date of the last found pattern.
Location: Location of the dashboard on the chart.
Size: Text size.
🔹 Calculation
Calculated Bars: Allows the usage of fewer bars for performance/speed improvement.
Supports & Resistances [UAlgo]The "Supports & Resistances " indicator is designed to identify and visualize key support and resistance levels on the price chart. It utilizes the Average True Range (ATR) and Pivot Points to define the boundaries of S & R zones and considers historical price action to assess the strength of these zones.
🔶 How to Obtain Zones
The script continuously analyzes the price action and identifies potential support and resistance zones based on the following criteria:
Zone Creation: For swing highs, a zone is created with the high price at the zone length as the top and the top minus the Average True Range (ATR) as the bottom. Conversely, for swing lows, the zone is created with the low price at the zone length as the bottom and the low plus the ATR as the top.
Zone Strength Calculation: The script iterates through historical bars within the zone and counts how many times the price (low for support, high for resistance) touched but failed to break entirely through the zone. This count is assigned as the zone's "strength".
Zone Display and Removal: It identifying zones by assigning a "strength" value based on how many times the price has approached but failed to break the zone. This helps prioritize stronger potential support/resistance levels. Only zones exceeding the defined "strength threshold" are visually displayed on the chart. Weaker zones or those broken by price are automatically removed.
🔶 Parameters
Zone Length: Traders can adjust S & R detection sensitivity, length to be used to find pivot points.
Strength Threshold: Set the minimum number of times the price needs to touch but fail to break a zone for it to be considered "strong" and displayed.
Visual Settings: Tailor the appearance of the support/resistance zones by defining separate colors and text size for borders, backgrounds, and zone text.
🔶 Disclaimer
The "Supports & Resistances " indicator is provided for educational and informational purposes only.
It should not be considered as financial advice or a recommendation to buy or sell any financial instrument.
The use of this indicator involves inherent risks, and users should employ their own judgment and conduct their own research before making any trading decisions. Past performance is not indicative of future results.
🔷 Related Scripts
Support and Resistance with Signals
ATR Based Support and Resistance Zones
Cumulative Volume Delta LineThis script is a refined version of TradingView's Cumulative Volume Delta (CVD) indicator. It features a CVD line for lower time frames and automatically switches to a Simple Moving Average (SMA) line on daily time frames and higher. This functionality makes it easier to spot Volume Delta divergences on daily charts while maintaining utility on intraday time frames.
Key Features:
Line Chart and Oscillator Configuration: Unlike TradingView's standard CVD, this script can be configured as a line chart or an oscillator, enhancing flexibility and usability.
Line chart for easier divergence spotting: The line chart format is preferred for spotting divergences, providing a clearer visual representation compared to other formats.
Accurate Calculations: Many older community CVD scripts use approximate calculations that can be inaccurate. This script leverages TradingView's own calculations, which are the most accurate available without tick data feeds.
Intraday and Daily Adaptation: The Traditional CVD script is a per bar volume delta on Daily and higher timeframes and cumulative volume delta for intraday session timeframes which makes it very hard to spot divergences on higher timeframes. This script resolves that by using an SMA on daily time frames and higher.
Auto-Switching Feature: The script intelligently switches between the CVD line and the SMA line based on the active time frame. This feature can be toggled off if you prefer to use the CVD on all time frames or the SMA on all time frames.
Customizable Settings: Building on TradingView's CVD script, this version includes all the same settings in addition to the new auto-switch, SMA length etc.
About Volume Delta and Cumulative Volume Delta:
Volume Delta is the difference between the buying and selling volume within a specified period. It helps traders understand the net buying or selling pressure in the market. A positive volume delta indicates more buying activity, while a negative volume delta indicates more selling activity.
Cumulative Volume Delta (CVD) aggregates the volume delta over time to provide a running total. This cumulative approach helps traders see the overall buying and selling pressure trends, making it easier to identify potential reversals or continuations in the market trend.
NVT Z-ScoreNVT Z-Score Script:
Data Source and Calculation: This script calculates the NVT ratio by dividing the market cap (assumed from QUANDL data) by a 90-day MA of the transaction volume (also from QUANDL), similar to the NVTS calculation. However, the adaptation lies in further analyzing the NVT ratio through a Z-score approach, not explicitly described in the original NVTS methodology.
Z-Score Analysis: The script calculates the mean and standard deviation of the NVT ratio over a user-defined period (daysForMean, defaulting to 180 days) and then computes the Z-score of the current NVT ratio relative to this historical data. This Z-score analysis introduces a standardized way of understanding the NVT ratio's deviation from its historical average, offering a nuanced view of market valuation states.
Visualization and Dynamic Zones: The visualization emphasizes Z-score-based dynamic zones (green, yellow, and red), determined by the stdDevMultiplier. These zones are plotted and filled on the chart, providing visual cues for interpreting the NVT ratio's current state in relation to its historical norm. This aspect significantly differs from the traditional NVTS approach by directly incorporating the concept of standard deviation and Z-scores into the analysis.
TrendLine Toolkit w/ Breaks (Real-Time)The TrendLine Toolkit script introduces an innovating capability by extending the conventional use of trendlines beyond price action to include oscillators and other technical indicators. This tool allows traders to automatically detect and display trendlines on any TradingView built-in oscillator or community-built script, offering a versatile approach to trend analysis. With breakout detection and real-time alerts, this script enhances the way traders interpret trends in various indicators.
🔲 Methodology
Trendlines are a fundamental tool in technical analysis used to identify and visualize the direction and strength of a price trend. They are drawn by connecting two or more significant points on a price chart, typically the highs or lows of consecutive price movements (pivots).
Drawing Trendlines:
Uptrend Line - Connects a series of higher lows. It signals an upward price trend.
Downtrend Line - Connects a series of lower highs. It indicates a downward price trend.
Support and Resistance:
Support Line - A trendline drawn under rising prices, indicating a level where buying interest is historically strong.
Resistance Line - A trendline drawn above falling prices, showing a level where selling interest historically prevails.
Identification of Trends:
Uptrend - Prices making higher highs and higher lows.
Downtrend - Prices making lower highs and lower lows.
Sideways (or Range-bound) - Prices moving within a horizontal range.
A trendline helps confirm the existence and direction of a trend, providing guidance in aligning with the prevailing market sentiment. Additionally, they are usually paired with breakout analysis, a breakout occurs when the price breaches a trendline. This signals a potential change in trend direction or an acceleration of the existing trend.
The script adapts this methodology to oscillators and other indicators. Instead of relying on price pivots, which can only be detected in retrospect, the script utilizes a trailing stop on the oscillator to identify potential swings in real-time, you may find more info about it here (SuperTrend toolkit) . We detect swings or pivots simply by testing for crosses between the indicator and its trailing stop.
type oscillator
float o = Oscillator Value
float s = Trailing Stop Value
oscillator osc = oscillator.new()
bool l = ta.crossunder(osc.o, osc.s) => Utilized as a formed high
bool h = ta.crossover (osc.o, osc.s) => Utilized as a formed low
This approach enables the algorithm to detect trendlines between consecutive pivot highs or lows on the oscillator itself, providing a dynamic and immediate representation of trend dynamics.
🔲 Breakout Detection
The script goes beyond trendline creation by incorporating breakout detection directly within the oscillator. After identifying a trendline, the algorithm continuously monitors the oscillator for potential breakouts, signaling shifts in market sentiment.
🔲 Setup Guide
A simple example on one of my public scripts, Z-Score Heikin-Ashi Transformed
🔲 Settings
Source - Choose an oscillator source of which to base the Toolkit on.
Zeroing - The Mid-Line value of the oscillator, for example RSI & MFI use 50.
Sensitivity - Calibrates the Sensitivity of which TrendLines are detected, higher values result in more detections.
🔲 Alerts
Bearish TrendLine
Bullish TrendLine
Bearish Breakout
Bullish Breakout
As well as the option to trigger 'any alert' call.
By integrating trendline analysis into oscillators, this Toolkit enhances the capabilities of technical analysis, bringing a dynamic and comprehensive approach to identifying trends, support/resistance levels, and breakout signals across various indicators.
Fusion Traders - RSI Overbought/Oversold + Divergence IndicatorFusion Traders - RSI Overbought/Oversold + Divergence Indicator - new version
This indicator has lots of various add ons.
RSI overbought / oversold with changeable inputs
Divergence indicator
DESCRIPTION:
This script combines the Relative Strength Index ( RSI ), Moving Average and Divergence indicator to make a better decision when to enter or exit a trade.
- The Moving Average line (MA) has been made hidden by default but enhanced with an RSIMA cloud.
- When the RSI is above the selected MA it turns into green and when the RSI is below the select MA it turns into red.
- When the RSI is moving into the Overbought or Oversold area, some highlighted areas will appear.
- When some divergences or hidden divergences are detected an extra indication will be highlighted.
- When the divergence appear in the Overbought or Oversold area the more weight it give to make a decision.
- The same colour pallet has been used as the default candlestick colours so it looks familiar.
HOW TO USE:
The prerequisite is that we have some knowledge about the Elliot Wave Theory, the Fibonacci Retracement and the Fibonacci Extension tools.
We are hoping you like this indicator and added to your favourite indicators. If you have any question then comment below, and I'll do my best to help.
FEATURES:
• You can show/hide the RSI .
• You can show/hide the MA.
• You can show/hide the lRSIMA cloud.
• You can show/hide the Stoch RSI cloud.
• You can show/hide and adjust the Overbought and Oversold zones.
• You can show/hide and adjust the Overbought Extended and Oversold Extended zones.
• You can show/hide the Overbought and Oversold highlighted zones.
HOW TO GET ACCESS TO THE SCRIPT:
• Favorite the script and add it to your chart.
41-80 F&O MA ScreenerThis Pine Script is a TradingView indicator named "41-80-F&O EMA Screener." It calculates and displays four moving averages (MA1, MA2, MA3, and MA4) and the Relative Strength Index (RSI) on a chart. The script generates buy and short signals based on certain conditions involving the moving averages and RSI. Additionally, it includes a screener section that displays a table of symbols with buy and short signals.
Here's a breakdown of the key components:
Moving Averages (MAs):
MA1: Simple Moving Average with length len1 (green line).
MA2: Simple Moving Average with length len2 (red line).
MA3: Simple Moving Average with length len3 (orange line).
MA4: Simple Moving Average with length len4 (black line).
Relative Strength Index (RSI):
The RSI is calculated with a length of rsiLengthInput and a source specified by rsiSourceInput.
Conditions for Buy and Short Signals:
Buy Signal: When MA1 is above MA2 and MA3, and RSI is above 50.
Short Signal: When MA1 is below MA2 and MA3, and RSI is below 50.
Signal Plots:
Buy signals are plotted as "B" below the corresponding bars.
Short signals are plotted as "S" above the corresponding bars.
Background Coloring:
Bars are colored based on their opening and closing prices.
Screener Section:
The script defines a watchlist (gticker) with 40 predefined symbols.
It then calls the getSignal function for each symbol to identify buy and short signals.
The results are displayed in a table with long signals in green and short signals in red.
Table Theming:
The script allows customization of the table's background, frame, and text colors, as well as the text size.
The table's location on the chart can also be customized.
Please note that the script uses the Mozilla Public License 2.0. Make sure to review and comply with the terms of this license if you plan to use or modify the script.
Candle size in pipsDescription
Enhance your trading strategy with precision using this script, designed to measure the range of a candle from wick to wick in pips. Whether you're implementing a specific pip requirement within a candle for your strategy, or simply seeking to better understand market dynamics, this tool provides valuable insights. The script is calculating the amount of pips between the high and the low then compares it to the minimal size you declared. If the amount of pips is more or equal to minimal size it will show the label.
Features
Alert Functionality: Opt to receive alerts by checking the checkbox (default: false).
Customizable Pip Threshold: Tailor the script to your needs by setting the minimum required pips to display on the screen (default: 12).
Different shape: circle, triangle up, triangle down, none
How to Use
Personalize your trading approach by integrating this script with your preferred strategy. For instance, in my strategy involving a 3M continuation, I leverage this tool to determine the pip count of the M15 candle before making entry decisions.
Note: Ensure you understand your strategy's requirements and adjust the script settings accordingly for optimal result s.
Feel free to reach out if you have any questions or require further assistance in maximizing the utility of this script.
COT MCIThe COT MCI script is a market indicator based on the data from the Commitment of Traders Reports.
Integration of COT Report Data:
The script sources COT data from futures contracts, including:
Treasury Bonds (ZB), Dollar Index (DX), 10-Year Treasury Notes (ZN)
Commodities like Soybeans (ZS), Soy Meal (ZM), Soy Oil (ZL), Corn (ZC), Wheat (ZW), Kansas City Wheat (KE), Pork (HE), Cattle (LE)
Precious Metals such as Gold (GC), Silver (SI), Palladium (PA), Platinum (PL)
Industrial Metals like Copper (HG), Aluminum (AUP), Steel (HRC)
Energy Products like Crude Oil (CL), Heating Oil (HO), Gasoline (RB), Natural Gas (NG), Brent Crude (BB)
Currencies such as AUD (6A), GBP (6B), CAD (6C), EUR (6E), JPY (6J), CHF (6S), NZD (6N), BRL (6L), MXN (6M), RUB (6R), ZAR (6Z)
Others: Sugar (SB), Coffee (KC), Cocoa (CC), Cotton (CT), Ethanol (EH), Rice (ZR), Oats (ZO), Whey (DC), Orange Juice (OJ), Lumber (LBS), Livestock (GF), E-mini S&P 500 (ES), E-mini Russell 2000 (RTY), E-mini Dow Jones (YM), E-mini NASDAQ-100 (NQ), VIX Futures (VX), S&P 500 (SP), DJIA (DJIA)
Cryptocurrencies such as Bitcoin (BTC) and Ethereum (ETH)
Functions and Logic of the Script:
COT Calculation: Determines the net positions for commercial actors and large speculators. Also Available are short and long positions of commercials or large speculators.
Position Change Analysis: Analyzes the percentage changes in net positions and open interest data over a period of 6 weeks (Weekly Chart).
Average Value Calculation: Determines short-term and long-term trend averages.
Trend Analysis: Buy and sell signals (represented in colors) are based on linear regressions and average calculations.
Usage and Application Examples:
Ideal for traders looking for a detailed analysis of market dynamics and position changes in the futures market. Suitable for decision-making in transaction timing and assessing market sentiment.
Usage Notes:
Users should be familiar with the interpretation of COT data and basic concepts of futures trading. Particularly suitable for medium to long-term trading strategies.
Intersection Value FunctionsWinning entry for the first Pinefest contest. The challenge required providing three functions returning the intersection value between two series source1 and source2 in the event of a cross, crossunder, and crossover.
Feel free to use the code however you like.
🔶 CHALLENGE FUNCTIONS
🔹 crossValue()
//@function Finds intersection value of 2 lines/values if any cross occurs - First function of challenge -> crossValue(source1, source2)
//@param source1 (float) source value 1
//@param source2 (float) source value 2
//@returns Intersection value
example:
value = crossValue(close, close )
🔹 crossoverValue()
//@function Finds intersection value of 2 lines/values if crossover occurs - Second function of challenge -> crossoverValue(source1, source2)
//@param source1 (float) source value 1
//@param source2 (float) source value 2
//@returns Intersection value
example:
value = crossoverValue(close, close )
🔹 crossunderValue()
//@function Finds intersect of 2 lines/values if crossunder occurs - Third function of challenge -> crossunderValue(source1, source2)
//@param source1 (float) source value 1
//@param source2 (float) source value 2
//@returns Intersection value
example:
value = crossunderValue(close, close )
🔶 DETAILS
A series of values can be displayed as a series of points, where the point location highlights its value, however, it is more common to connect each point with a line to have a continuous aspect.
A line is a geometrical object connecting two points, each having y and x coordinates. A line has a slope controlling its steepness and an intercept indicating where the line crosses an axis. With these elements, we can describe a line as follows:
slope × x + intercept
A cross between two series of values occurs when one series is greater or lower than the other while its previous value isn't.
We are interested in finding the "intersection value", that is the value where two crossing lines are equal. This problem can be approached via linear interpolation.
A simple and direct approach to finding our intersection value is to find the common scaling factor of the slopes of the lines, that is the multiplicative factor that multiplies both lines slopes such that the resulting points are equal.
Given:
A = Point A1 + m1 × scaling_factor
B = Point B1 + m2 × scaling_factor
where scaling_factor is the common scaling factor, and m1 and m2 the slopes:
m1 = Point A2 - Point A1
m2 = Point B2 - Point B1
In our cases, since the horizontal distance between two points is simply 1, our lines slopes are equal to their vertical distance (rise).
Under the event of a cross, there exists a scaling_factor satisfying A = B , which allows us to directly compute our intersection value. The solution is given by:
scaling_factor = (B1 - A1)/(m1 - m2)
As such our intersection value can be given by the following equivalent calculations:
(1) A1 + m1 × (B1 - A1)/(m1 - m2)
(2) B1 + m2 × (B1 - A1)/(m1 - m2)
(3) A2 - m2 × (A2 - B2)/(m1 - m2)
(4) B2 - m2 × (A2 - B2)/(m1 - m2)
The proposed functions use the third calculation.
This approach is equivalent to expressions using the classical line equation, with:
slope1 × x + intercept1 = slope2 × x + intercept2
By solving for x , the intersection point is obtained by evaluating any of the line equations for the obtained x solution.
🔶 APPLICATIONS
The intersection point of two crossing lines might lead to interesting applications and creations, in this section various information/tools derived from the proposed calculations are presented.
This supplementary material is available within the script.
🔹 Intersections As Support/Resistances
The script allows extending the lines of the intersection value when a cross is detected, these extended lines could have applications as support/resistance lines.
🔹 Using The Scaling Factor
The core of the proposed calculation method is the common scaling factor, which can be used to return useful information, such as the position of the cross relative to the x coordinates of a line.
The above image highlights two moving averages (in green and red), the cross-interval areas are highlighted in blue, and the intersection point is highlighted as a blue line.
The pane below shows a bar plot displaying:
1 - scaling factor = 1 -
Values closer to 1 indicate that the cross location is closer to x2 (the right coordinate of the lines), while values closer to 0 indicate that the cross location is closer to x1 .
🔹 Intersection Matrix
The main proposed functions of this challenge focus on the crossings between two series of values, however, we might be interested in applying this over a collection of series.
We can see in the image above how the lines connecting two points intersect with each other, we can construct a matrix populated with the intersection value of two corresponding lines. If (X, Y) represents the intersection value between lines X and Y we have the following matrix:
| Line A | Line B | Line C | Line D |
-------|--------|--------|--------|--------|
Line A | | (A, B) | (A, C) | (A, D) |
Line B | (B, A) | | (B, C) | (B, D) |
Line C | (C, A) | (C, B) | | (C, D) |
Line D | (D, A) | (D, B) | (D, C) | |
We can see that the upper triangular part of this matrix is redundant, which is why the script does not compute it. This function is provided in the script as intersectionMatrix :
//@function Return the N * N intersection matrix from an array of values
//@param array_series (array) array of values, requires an array supporting historical referencing
//@returns (matrix) Intersection matrix showing intersection values between all array entries
In the script, we create an intersection matrix from an array containing the outputs of simple moving averages with a period in a specific user set range and can highlight if a simple moving average of a certain period crosses with another moving average with a different period, as well as the intersection value.
🔹 Magnification Glass
Crosses on a chart can be quite small and might require zooming in significantly to see a detailed picture of them. Using the obtained scaling factor allows reconstructing crossing events with an higher resolution.
A simple supplementary zoomIn function is provided to this effect:
//@function Display an higher resolution representation of intersecting lines
//@param source1 (float) source value 1
//@param source2 (float) source value 2
//@param css1 (color) color of source 1 line
//@param css2 (color) color of source 2 line
//@param intersec_css (color) color of intersection line
//@param area_css (color) color of box area
Users can obtain a higher resolution by modifying the provided "Resolution" setting.
The function returns a higher resolution representation of the most recent crosses between two input series, the intersection value is also provided.
Monthly beta (5Y monthly) with multi-timeframe supportThe PROPER way to calculate beta for a stock using monthly price returns . None of this nonsense using daily returns and sliding windows as done by other scripts...
Works on any timeframe.
This script has been checked against 100s of stocks on Yahoo finance and Zacks research data and matches 100% (some rounding error as this script is kept updated live on unconfirmed monthly bars).
You can check for yourself:
Zacks fundamentals - beta
The script calculates beta using the Variance-Covariance Method as described on Investopedia
How to calculate Beta
New York Sessions Morning, Lunch and afternoon. AMKDescription
The script is designed to highlight the New York Stock Exchange's trading day, broken down into three specific sub-sessions: morning, lunchtime, and afternoon. Each sub-session is color-coded to provide an immediate visual cue about which portion of the trading day is currently active. Additionally, this script allows the user to adjust the time zone offset, making it adaptable for traders in different time zones around the world.
Originality
While there are scripts that highlight the entire trading day or specific market hours, this script adds granularity by breaking down the New York trading session into its typical behavioral parts: the morning rush, the lunchtime lull, and the afternoon action. The addition of an adjustable time zone offset is a unique feature that makes the tool more versatile and accommodating to a global user base.
Usefulness
The ability to visualize these different trading sessions can be valuable for various types of traders:
Day Traders: The script helps to immediately identify which session they are in, aiding in their trading strategy as market behavior can vary between these periods.
Swing Traders: They may use these sub-sessions to time their entries or exits, especially if they're based in different time zones.
Market Analysts: The color-coded sessions provide a quick way to analyze the historical performance and volatility of an asset during different trading periods.
Global Traders: The time zone adjustment feature makes it easy for traders outside of the Eastern Time Zone to customize the script according to their local time, increasing its utility across different markets.
Educational Purpose: For new traders, this could serve as an educational tool to understand the typical behavior of the stock market at different times of the day.
So, whether you're timing an intraday entry or looking for patterns tied to specific market sessions, this script offers a straightforward, visual way to keep track of where you are in the trading day.
Anchored Average Price by Atilla Yurtseven (AAP)Anchored Average Price indicator is designed to pinpoint a specific date and price in a given financial instrument's price chart. Once anchored to the desired date and price level, the script calculates and displays the average price from that anchor point to the current day.
Features
Customizable Source: Allows users to choose the source data for calculations. By default, it uses hlc3, which is the average of high, low, and close prices.
Start Date Input: The script includes a timestamp-based input that allows the user to specify the anchor date easily.
Customizable Color: Users can change the color of the plotted average line, adding an additional layer of customization to the visual representation.
Code Mechanics
Initialization: Declares the variables and arrays required for calculations and display. The array is used to store price data.
Condition Check: Only starts storing and calculating data if the chart's time is equal to or greater than the user-defined start date.
Data Storing: Once the condition is met, the script pushes the src price data into the array for future averaging.
Average Calculation: It calculates the average price of the values stored in the array.
Data Clearing: If the condition is not met, the array is cleared, and no average is plotted.
Plotting: The average price is plotted on the chart with the user-defined color.
By incorporating these features and mechanics, AAP provides traders and investors with a powerful tool for assessing average prices anchored to a specific date or swing.
Disclaimer:
This TradingView script is intended for educational and informational purposes only and should not be considered as investment or trading advice. Past performance is not indicative of future results. Trading and investing carry a high level of risk, and you should consult with a qualified financial advisor before making any financial decisions. The creator of this script, Atilla Yurtseven, is not responsible for any losses or damages incurred as a result of using this script.
Trade smart, stay safe
Atilla Yurtseven
Spot-Vol CorrelationSpot-Vol Correlation Script Guide
Purpose:
This TradingView script measures the correlation between percentage changes in the spot price (e.g., for SPY, an ETF that tracks the S&P 500 index) and the changes in volatility (e.g., as indicated by the VIX, the Volatility Index). Its primary objective is to discern whether the relationship between spot price and volatility behaves as expected ("normal" condition) or diverges from the expected pattern ("abnormal" condition).
Normal vs. Abnormal Correlation:
Normal Correlation: Historically, the VIX (or volatility) and the spot price of major indices like the S&P 500 have an inverse relationship. When the spot price of the index goes up, the VIX tends to go down, indicating lower volatility. Conversely, when the index drops, the VIX generally rises, signaling increased volatility.
Abnormal Correlation: There are instances when this inverse relationship doesn't hold, and both the spot price and the VIX move in the same direction. This is considered an "abnormal" condition and might indicate unusual market dynamics, potential uncertainty, or impending shifts in market sentiment.
Using the Script:
Inputs:
First Symbol: This is set by default to VIX, representing volatility. However, users can input any other volatility metric they prefer.
Second Symbol: This is set to SPY by default, representing the spot price of the S&P 500 index. Like the first symbol, users can substitute SPY with any other asset or index of their choice.
Length of Calculation Period: Users can define the lookback period for the correlation calculation. By default, it's set to 10 periods (e.g., days for a daily chart).
Upper & Lower Bounds of Normal Zone: These parameters define the range of correlation values that are considered "normal" or expected. By default, this is set between -0.60 and -1.00.
Visuals:
Correlation Line: The main line plot shows the correlation coefficient between the two input symbols. When this line is within the "normal zone", it indicates that the spot price and volatility are inversely correlated. If it's outside this zone, the correlation is considered "abnormal".
Green Color: Indicates a period when the spot price and VIX are behaving as traditionally expected (i.e., one rises while the other falls).
Red Color: Denotes a period when the spot price and VIX are both moving in the same direction, which is an abnormal condition.
Shaded Area (Normal Zone): The area between the user-defined upper and lower bounds is shaded in green, highlighting the range of "normal" correlation values.
Interpretation:
Monitor the color and position of the correlation line relative to the shaded area:
If the line is green and within the shaded area, the market dynamics are as traditionally expected.
If the line is red or outside the shaded area, users should exercise caution as this indicates a divergence from typical behavior, which can precede significant market moves or heightened uncertainty.
Intraday Volatility Bands [Honestcowboy]The Intraday Volatility Bands aims to provide a better alternative to ATR in the calculation of targets or reversal points.
How are they different from ATR based bands?
While ATR and other measures of volatility base their calculations on the previous bars on the chart (for example bars 1954 to 1968). The volatility used in these bands measure expected volatility during that time of the day.
Why would you take this approach?
Markets behave different during certain times of the day, also called sessions.
Here are a couple examples.
Asian Session (generally low volatility)
London Session (bigger volatility starts)
New York Session (overlap of New York with London creates huge volatility)
Generally when using bands or channel type indicators intraday they do not account for the upcoming sessions. On London open price will quickly spike through a bollinger band and it will take some time for the bands to adjust to new volatility.
This script will show expected volatility targets at the start of each new bar and will not adjust during the bar. It already knows what price is expected to do at this time of day.
Script also plots arrows when price breaches either the top or bottom of the bands. You can also set alerts for when this occurs. These are non repainting as the script knows the level at start of the bar and does not change.
🔷 CALCULATION
Think of this script like an ATR but instead it uses past days data instead of previous bars data. Charts below should visualise this more clearly:
The scripts measure of volatility is based on a simple high-low.
The script also counts the number of bars that exist in a day on your current timeframe chart. After knowing that number it creates the matrix used in it's calculations and data storage.
See how it works perfectly on a lower timeframe chart below:
Getting this right was the hardest part, check the coding if you are interested in this type of stuff. I commented every step in the coding process.
🔷 SETTINGS
Every setting of the script has a tooltip but I provided a breakdown here:
Some more examples of different charts: